package org.witsoft.localmq;

import org.witsoft.localmq.model.Message;

import java.io.IOException;
import java.util.List;

/**
 * @ClassName: LogManager
 * @Description:
 * @Author: Colin
 * @Date: 2020/12/26 2:23 PM
 * @Version 1.0
 **/
public interface MessageManager {

    /**
     * 生产数据
     * @param batchData 数据集
     * @throws IOException
     */
    void produce(byte[]... batchData) throws IOException;

    /**
     * 消费数据
     * @param size 批次大小
     * @return 数据集合
     * @throws IOException
     */
    List<Message> consume(int size) throws IOException;

    /**
     * 拉取数据不自动提交
     * @param offset 偏移量
     * @param size 批次大小
     * @return 数据集合
     * @throws IOException
     */
    List<Message> poll(int offset, int size) throws IOException;

    /**
     * 手动提交消费偏移量，当使用poll方式获取数据可采用此方式
     * @param offset
     * @throws IOException
     */
    void commitConsumeOffset(int offset) throws IOException;

    /**
     * 清除旧数据
     */
    void purge() throws IOException;

}
